import axios from 'axios';
import { Message } from 'element-ui';
import { Session } from '@/utils/storage';
import envconfig from '@/envconfig.js';

// 全局变量存储 baseURL
let baseURL = 'http://fallback-ip:port'; // 默认值

// 初始化时加载配置
const loadConfig = async () => {
  try {
    const response = await fetch(`${envconfig.localBaseURL}/config/${envconfig.jsonName}.json`);
    const config = await response.json();
    baseURL = config.IP;
  } catch (error) {
    console.error('加载配置文件失败，使用默认值:', error);
  }
};

// ---------------------- 关键改动 ----------------------
// 在应用启动时立即加载配置（只需一次）
await loadConfig();

// 创建 Axios 实例（初始化时设置 baseURL）
const service = axios.create({
  // 测试代理是否生效，暂时注释掉 baseURL
  // baseURL, // 直接使用已加载的配置
  timeout: 50000,
});

// 请求拦截器（不再需要每次加载配置）
service.interceptors.request.use(
  (config) => {
    if (Session.get('token')) {
      config.headers.common['Token'] = `${Session.get('token')}`;
    }
    return config;
  },
  (error) => Promise.reject(error)
);
// ---------------------- 关键改动 ----------------------

// 响应拦截器（保持原有逻辑）
service.interceptors.response.use(
  (response) => response.data,
  (error) => {
    if (error.message.includes('timeout')) {
      Message.error('网络超时');
    } else if (error.message === 'Network Error') {
      Message.error('网络连接错误');
    } else {
      Message.error(error.response?.data?.message || '未知错误');
    }
    return Promise.reject(error);
  }
);

// 导出实例和 IP
export const getBaseURL = () => baseURL;
export default service;
